package logic;
import gui.AcoFrame;
import logic.algorithm.aco.AntSystem;
import logic.algorithm.aco.RankBasedAS;
import logic.algorithm.greedy.NearestNeighbor;
import logic.objects.Problem;



public class Start {

	public static void main(String[] args){
		Problem prob2=getExapmleProblem();
//		Problem prob2=getRandomProblem(30);
		AcoFrame frame=new AcoFrame(prob2);		
		AntSystem alg=new RankBasedAS(prob2,frame);
//		Problem prob=new Problem(true);
//		Problem prob2=new Problem(false);
//		int x;
//		int y;
//		for (int i=0;i<30;i++){
//			x=(int) (Math.random()*2000);
//			y=(int) (Math.random()*2000);
//		prob.addNode(x,y );
//		prob2.addNode(x, y);}
//		Problem prob=new Problem(true);
////		Problem prob2=new Problem(false);
//		int x;
//		int y;
//		for (int i=0;i<40;i++){
//			x=(int) (Math.random()*2000);
//			y=(int) (Math.random()*2000);
//		prob.addNode(x,y );
//		prob2.addNode(x, y);}
//		NearestNeighbor.solve(prob2);
//		DiagrammPanel panel2=new DiagrammPanel(prob);
		
//		panel2.setSize(GraphicVariables.MAX_WIDTH_Panel,GraphicVariables.MAX_HEIGHT_Panel);
////		panel2.setLocation((GraphicVariables.MAX_WIDTH_Frame-GraphicVariables.MAX_WIDTH_Panel)/2,(GraphicVariables.MAX_HEIGHT_Frame-GraphicVariables.MAX_HEIGHT_Panel)/2);
//		frame.add(panel2);
//		frame.repaint();
//		ACOAlgorithm.solve(prob,frame);
//		alg.run();

		
	}
	private static Problem getExapmleProblem(){
		Problem prob=new Problem(true);
		prob.addNode(44, 48);

		prob.addNode(8, 13);
		prob.addNode(20, 20);
		prob.addNode(14, 30);
		prob.addNode(27, 44);
		prob.addNode(34, 32);
		prob.addNode(36, 14);
		prob.addNode(50, 22);
		prob.addNode(56, 8);
		prob.addNode(72,14);
		prob.addNode(86, 30);
		prob.addNode(74, 48);
		prob.addNode(62, 38);
		prob.addNode(30, 64);
		prob.addNode(16, 73);
		prob.addNode(24, 90);
		prob.addNode(48, 78);
		prob.addNode(60, 66);
		prob.addNode(86, 66);
		prob.addNode(72, 90);
		prob.addNode(10, 93);
		prob.addNode(21, 58);
		prob.addNode(40, 65);
		prob.addNode(53, 93);
		prob.addNode(73, 78);
		prob.addNode(86, 80);
		prob.addNode(85, 50);
		prob.addNode(59, 21);
		prob.addNode(75, 25);
		prob.addNode(84, 20);
		return prob;

	}
	private static Problem getRandomProblem(int amountOfNodes){
		Problem prob=new Problem(true);
		for (int i=0;i<amountOfNodes;i++){
			int x=(int) (Math.random()*2000);
			int y=(int) (Math.random()*2000);
		prob.addNode(x,y );}
		return prob;
		
	}
}
